package com.nari.ncps.screen.controller;

import com.nari.ncps.screen.common.pojo.ApiResponse;
import com.nari.ncps.screen.service.coal.*;
import com.nari.ncps.screen.vo.coal.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * <p>
 * 能源消费表 前端控制器
 * </p>
 *
 * @author xuesong
 * @since 2025-08-23
 */
@Tag(name = "煤炭产业", description = "煤炭产业")
@RestController
@RequestMapping("/coal")
public class CoalController {

    @Resource
    private CoalProdoperOutputService coalProdoperOutputService;

    @Resource
    private CoalProdoperOsvService coalProdoperOsvService;

    @Resource
    private CoalProdoperStockService coalProdoperStockService;

    @Resource
    private CoalProdoperSalesService coalProdoperSalesService;

    @Resource
    private CoalProdoperTransportService coalProdoperTransportService;

    @Resource
    private CoalProdoperSalesStructureService coalProdoperSalesStructureService;

    @Resource
    private CoalOverviewItemService coalOverviewItemService;

    @Resource
    private CoalOpermonEquipUseService coalOpermonEquipUseService;

    @Resource
    private CoalOpermonEquipFaultService coalOpermonEquipFaultService;

    @Resource
    private CoalOpermonRtOutputService coalOpermonRtOutputService;

    @Resource
    private CoalOpermonRtEffectService coalOpermonRtEffectService;

    @Resource
    private CoalOpermonRtSlopeAlarmService coalOpermonRtSlopeAlarmService;

    @Resource
    private CoalSafetyenvRestorationService coalSafetyenvRestorationService;

    @Resource
    private CoalSafetyenvRiskDealService coalSafetyenvRiskDealService;

    @Resource
    private CoalSafetyenvAlarmService coalSafetyenvAlarmService;

    @Resource
    private CoalProdoperSalesCalorificService coalProdoperSalesCalorificService;


    @Operation(summary = "生产经营-煤炭产量-查询年及月产量完成情况", description = "生产经营-煤炭产量-查询年及月产量完成情况")
    @GetMapping(value = "/coalproduct/operation/coaloutput")
    public ApiResponse<CoalOutputVO> getCoalOutput(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭产量数据
        CoalOutputVO vo1 = coalProdoperOutputService.getCoalOutput(year);

        return ApiResponse.succeed(vo1);
    }

    @Operation(summary = "生产经营-煤炭产量-各单位煤炭产量完成情况", description = "生产经营-煤炭产量-各单位煤炭产量完成情况")
    @GetMapping(value = "/coalproduct/operation/coaloutput/units")
    public ApiResponse<List<CoalOutputUnitsVO>> getCoalOutputByUnits(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取各单位煤炭产量数据
        List<CoalOutputUnitsVO> resultList = coalProdoperOutputService.getCoalOutputByUnits(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-煤炭产量-煤炭产量完成趋势", description = "生产经营-煤炭产量-煤炭产量完成趋势")
    @GetMapping(value = "/coalproduct/operation/coaloutput/trend")
    public ApiResponse<List<CoalOutputTrendVO>> getCoalOutputTrend(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭产量趋势数据
        List<CoalOutputTrendVO> resultList = coalProdoperOutputService.getCoalOutputTrend(year);


        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-土岩玻璃量-土岩剥离量完成情况", description = "生产经营-土岩玻璃量-土岩剥离量完成情况")
    @GetMapping(value = "/coalproduct/operation/stripping")
    public ApiResponse<CoalStrippingVO> getStripping(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取土岩剥离量数据
        CoalStrippingVO vo = coalProdoperOsvService.getStripping(year);
        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "生产经营-土岩玻璃量-各单位土岩剥离量完成情况", description = "生产经营-土岩玻璃量-各单位土岩剥离量完成情况")
    @GetMapping(value = "/coalproduct/operation/stripping/units")
    public ApiResponse<List<CoalStrippingUnitsVO>> getStrippingByUnits(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取各单位土岩剥离量数据
        List<CoalStrippingUnitsVO> resultList = coalProdoperOsvService.getStrippingByUnits(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-土岩剥离量-土岩剥离量完成趋势", description = "生产经营-土岩剥离量-土岩剥离量完成趋势")
    @GetMapping(value = "/coalproduct/operation/stripping/trend")
    public ApiResponse<List<CoalStrippingTrendVO>> getStrippingTrend(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取土岩剥离量趋势数据
        List<CoalStrippingTrendVO> resultList = coalProdoperOsvService.getStrippingTrend(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-煤炭库存-煤炭库存量趋势", description = "生产经营-煤炭库存-煤炭库存量趋势")
    @GetMapping(value = "/coalproduct/operation/inventory/trend")
    public ApiResponse<List<CoalInventoryTrendVO>> getInventoryTrend(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭库存量趋势数据
        List<CoalInventoryTrendVO> resultList = coalProdoperStockService.getInventoryTrend(year);


        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-煤炭库存-各单位煤炭库存情况", description = "生产经营-煤炭库存-各单位煤炭库存情况")
    @GetMapping(value = "/coalproduct/operation/inventory/units")
    public ApiResponse<List<CoalInventoryUnitsVO>> getInventoryByUnits(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取各单位煤炭库存数据
        List<CoalInventoryUnitsVO> resultList = coalProdoperStockService.getInventoryByUnits(year);
        return ApiResponse.succeed(resultList);
    }


    @Operation(summary = "生产经营-煤炭销售-煤炭销量完成情况", description = "生产经营-煤炭销售-煤炭销量完成情况")
    @GetMapping(value = "/coalproduct/operation/sales")
    public ApiResponse<CoalSalesVO> getCoalSales(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭销量数据
       // CoalSalesVO vo = coalProdoperSalesService.getCoalSales(year);

        CoalSalesVO vo = coalProdoperSalesCalorificService.getCoalSales(year);

        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "生产经营-煤炭销售-煤炭运输情况", description = "生产经营-煤炭销售-煤炭运输情况")
    @GetMapping(value = "/coalproduct/operation/sales/transport")
    public ApiResponse<List<CoalTransportVO>> getSalesTransport(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭运输情况数据
     //  List<CoalTransportVO> resultList = coalProdoperTransportService.getSalesTransport(year);
        List<CoalTransportVO> resultList = coalProdoperSalesCalorificService.getSalesTransport(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "生产经营-煤炭销售-销售结构", description = "生产经营-煤炭销售-销售结构")
    @GetMapping(value = "/coalproduct/operation/sales/structure")
    public ApiResponse<CoalSalesStructureVO> getSalesStructure(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭销售结构数据
      //  CoalSalesStructureVO vo = coalProdoperSalesStructureService.getSalesStructure(year);
        CoalSalesStructureVO vo = coalProdoperSalesCalorificService.getSalesStructure(year);
        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "产业指标-产业顶部指标", description = "产业指标-产业顶部指标")
    @GetMapping(value = "/coalproduct/top-indicators")
    public ApiResponse<CoalTopIndicatorsVO> getTopIndicators(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取煤炭产业顶部指标数据
        CoalTopIndicatorsVO vo = coalOverviewItemService.getTopIndicators(year);



        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "运行监测-设备状态监测-设备动用统计", description = "运行监测-设备状态监测-设备动用统计")
    @GetMapping(value = "/coalproduct/monitoring/equipment/usage")
    public ApiResponse<List<CoalEquipmentUsageVO>> getEquipmentUsage(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取设备动用统计数据
        List<CoalEquipmentUsageVO> resultList = coalOpermonEquipUseService.getEquipmentUsage(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "运行监测-设备状态监测-设备故障统计", description = "运行监测-设备状态监测-设备故障统计")
    @GetMapping(value = "/coalproduct/monitoring/equipment/failures")
    public ApiResponse<CoalEquipmentFaultVO> getEquipmentFaultStatistics(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取设备故障统计数据
        CoalEquipmentFaultVO vo = coalOpermonEquipFaultService.getEquipmentFaultStatistics(year);
        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "运行监测-矿场运行监测-产出情况", description = "运行监测-矿场运行监测-产出情况")
    @GetMapping(value = "/coalproduct/monitoring/production")
    public ApiResponse<List<CoalProductionOutputVO>> getProductionOutput(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取产出情况数据
        List<CoalProductionOutputVO> resultList = coalOpermonRtOutputService.getProductionOutput(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "运行监测-矿场运行监测-生产效能", description = "运行监测-矿场运行监测-生产效能")
    @GetMapping(value = "/coalproduct/monitoring/efficiency")
    public ApiResponse<List<CoalProductionEfficiencyVO>> getProductionEfficiency(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取生产效能数据
        List<CoalProductionEfficiencyVO> resultList = coalOpermonRtEffectService.getProductionEfficiency(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "运行监测-矿场运行监测-边坡告警情况", description = "运行监测-矿场运行监测-边坡告警情况")
    @GetMapping(value = "/coalproduct/monitoring/slope-alerts")
    public ApiResponse<List<CoalSlopeAlertVO>> getSlopeAlerts(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service获取边坡告警数据
        List<CoalSlopeAlertVO> resultList = coalOpermonRtSlopeAlarmService.getSlopeAlerts(year);
        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "安全环保-生态修复治理面积", description = "安全环保-生态修复治理面积")
    @GetMapping(value = "/coalproduct/safety/eco-restoration")
    public ApiResponse<List<CoalEcoRestorationVO>> getEcoRestoration(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取生态修复治理面积数据
        List<CoalEcoRestorationVO> resultList = coalSafetyenvRestorationService.getEcoRestoration(year);

        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "安全环保-危险废弃物处置情况", description = "安全环保-危险废弃物处置情况")
    @GetMapping(value = "/coalproduct/safety/waste-disposal")
    public ApiResponse<List<CoalWasteDisposalVO>> getWasteDisposal(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取危险废弃物处置情况数据
        List<CoalWasteDisposalVO> resultList = coalSafetyenvRiskDealService.getWasteDisposal(year);


        return ApiResponse.succeed(resultList);
    }

    @Operation(summary = "安全环保-安全告警", description = "安全环保-安全告警")
    @GetMapping(value = "/coalproduct/safety/alerts")
    public ApiResponse<List<CoalSafetyAlertVO>> getSafetyAlerts(@RequestParam(value = "year", required = false) Integer year) {
        // 调用Service方法获取安全告警数据
        List<CoalSafetyAlertVO> resultList = coalSafetyenvAlarmService.getSafetyAlerts(year);
        return ApiResponse.succeed(resultList);
    }


    //************************************************* 弹窗部分接口 *************************************************
    //************************************************* 弹窗部分接口 *************************************************
    //************************************************* 弹窗部分接口 *************************************************
    //************************************************* 弹窗部分接口 *************************************************
    //************************************************* 弹窗部分接口 *************************************************


    @Operation(summary = "矿区简介", description = "矿区简介")
    @GetMapping(value = "/coalproduct/mine/intro")
    public ApiResponse<CoalMineIntroVO> getMineIntro(@RequestParam(value = "orgCode", required = false) String orgCode) {
        // Mock 数据：根据 orgCode 返回不同矿场信息
        CoalMineIntroVO vo = new CoalMineIntroVO();
        
        if ("C_01_01".equals(orgCode)) {
            // 南露天矿-南矿
            vo.setMineName("南露天矿");
            vo.setFoundedYear("1976");
            vo.setAnnualCapacity("2000万吨/年");
            vo.setCoalReserves("充足");
            vo.setImageUrl("");
            vo.setIntroduction("南露天煤矿始建于1976年4月，是我国自行设计、自主施工建设的第一座千万吨级现代化露天煤矿，是国家\"七五\"、\"八五\"重点建设项目，曾获\"全国依法生产先进煤矿\"、\"全国双十佳煤矿\"、\"全国煤炭工业特级安全高效露天矿\"等荣誉；是安全生产标准化管理体系一级达标煤矿；年核定产能2000万吨。近年来，南露天煤矿以\"创新驱动\"赋能智慧发展，以\"双碳理念\"指导一流建设。\"尧光壹号\"智慧矿山综合管控平台取得成效；无人矿卡、无人值守等少人无人成果显著；国内首台百吨级纯电矿卡、氢混动力矿卡助力绿色转型；换电无人矿卡在智能矿山领域的不断探索彰显了央企矿山的行业担当，向\"安全、智能、绿色、高效\"一流矿山奋勇前行。");
        } else if ("C_01_02".equals(orgCode)) {
            // 北露天矿-北矿
            vo.setMineName("北露天矿");
            vo.setFoundedYear("1985");
            vo.setAnnualCapacity("1000万吨/年");
            vo.setCoalReserves("2.6亿吨");
            vo.setImageUrl("");
            vo.setIntroduction("北露天煤矿始建于1985年，核定能力1000万吨/年，平均剥采比2.8m³/t，现有可采储量2.6亿吨。产品为褐煤，平均发热量3100大卡，90%的商品煤销往公司自备电厂和坑口电厂。煤炭生产采用半连续工艺，剥离生产采用间断式工艺，自营比例约占总量的55%。始终坚持以建设\"安全、智能、绿色、高效\"露天煤矿为目标；动态坚持安全生产标准化\"一级标准\"；坚持\"无人矿山\'发展方向。稳步开展矿卡无人驾驶、输煤系统少人/无人值守等智能矿山建设项目。实施设备大型化，加快矿卡电能替代，建设排土场风电示范项目，推动了生产方式向绿色低碳转变，是国家级高产高效特级矿井，首批通过自治区智能化矿山建设验收的煤矿。");
        } else if ("C_01_03".equals(orgCode)) {
            // 白音华露天矿-2号矿
            vo.setMineName("白音华露天矿");
            vo.setFoundedYear("2005");
            vo.setAnnualCapacity("1500万吨/年");
            vo.setCoalReserves("9.83亿吨");
            vo.setImageUrl("");
            vo.setIntroduction("白音华露天矿始建于2005年，煤炭储量9.83亿吨，年核定产能为1500万吨/年。2019年以来，按照\"基于一套标准体系、建设一条高速数据通道、构建一张数据采集网络、搭建一座大数据中心、打造一个综合业务管理平台\"的智能化发展思路，秉持\"少人则安、无人则安\"理念，以\"工业化+信息化\"两化融合为抓手，综合运用物联、人工智能、大数据等前沿技术，建立\"公司、部门、班组\"三级安全管控机制，将安全管理标准融合形成了智能安全管理体系；在全线9.5公里长的地面输煤系统内，打造25条胶带机正常作业过程中\"无人值守\"新模式，项目入选煤炭工业协会行业标杆案例；在煤炭运输环节，实现国内首个露天煤矿5G+宽体自卸车无人驾驶多编组全天候生产运行。");
        } else if ("C_01_04".equals(orgCode)) {
            // 白音华蒙东煤业公司-3号矿
            vo.setMineName("白音华蒙东煤业公司");
            vo.setFoundedYear("2006");
            vo.setAnnualCapacity("2000万吨/年");
            vo.setCoalReserves("13.66亿吨");
            vo.setImageUrl("");
            vo.setIntroduction("白音华蒙东煤业公司成立于2006年8月，矿山地质储量13.66亿吨，年核定产能2000万吨/年，设计服务年限60.4年。白音华蒙东煤业公司以建设\"智慧矿山\"为目标，立足于企业安全生产和经营管理，以工业互联网虚拟云平台打造的智能化安全管理系统为底座，先后完成变配电无人值守、排土场防火预警、水处理集控和智能安全预警等系统建设，打造具备准入、预警、监控、应急、培训、无人六大功能的智慧矿山管控平台雏形。公司把握智慧化、无人化发展方向，年内力争实现一次破碎站、斗轮堆取料机、装车站、地销煤场四大应用场景智慧无人目标。2024年公司成功通过自治区企业研发中心和两化融合贯标评定。");
        } else if ("C_01_05".equals(orgCode)) {
            // 扎哈淖尔露天矿-扎矿
            vo.setMineName("扎哈淖尔露天矿");
            vo.setFoundedYear("2011");
            vo.setAnnualCapacity("1800万吨/年");
            vo.setCoalReserves("6.67亿吨");
            vo.setImageUrl("");
            vo.setIntroduction("扎哈淖尔煤业公司成立于2011年，核定产能1800万吨/年，截至2023年底能利用资源储量保有6.67亿吨，煤炭加权热值3500大卡以上，所采煤炭具有低硫、低磷、高挥发分、高灰熔点的环保特点，为优质工业用煤。煤炭生产采用自营模式，生产工艺选择间断和半连续生产工艺，剥离采用自有与外委相结合模式，生产工艺选择间断、半连续、连续相结合的综合生产工艺。公司始终秉承党建引领、安全发展、经济效益深度融合与注重，坚持以\"安全、智能、绿色、高效\"为发展目标，率先实现地煤销售无人值守、成功研发露天矿作业车辆的智能识别预警系统探索实践软岩无人驾驶运输作业。2023年，通过\"国家级高新技术企业\"认定，2019年列入\"自治区绿色矿山名录\"，先后荣获国务院国资委\"中央企业先进基层党组织\"、连续四年获得煤炭工业安全高效矿井（露天）等荣誉。");
        } else {
            // 默认返回南露天矿信息
            vo.setMineName("南露天矿");
            vo.setFoundedYear("1976");
            vo.setAnnualCapacity("2000万吨/年");
            vo.setCoalReserves("充足");
            vo.setImageUrl("");
            vo.setIntroduction("南露天煤矿始建于1976年4月，是我国自行设计、自主施工建设的第一座千万吨级现代化露天煤矿，是国家\"七五\"、\"八五\"重点建设项目，曾获\"全国依法生产先进煤矿\"、\"全国双十佳煤矿\"、\"全国煤炭工业特级安全高效露天矿\"等荣誉；是安全生产标准化管理体系一级达标煤矿；年核定产能2000万吨。近年来，南露天煤矿以\"创新驱动\"赋能智慧发展，以\"双碳理念\"指导一流建设。\"尧光壹号\"智慧矿山综合管控平台取得成效；无人矿卡、无人值守等少人无人成果显著；国内首台百吨级纯电矿卡、氢混动力矿卡助力绿色转型；换电无人矿卡在智能矿山领域的不断探索彰显了央企矿山的行业担当，向\"安全、智能、绿色、高效\"一流矿山奋勇前行。");
        }
        
        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "煤矿基本信息", description = "煤矿基本信息")
    @GetMapping(value = "/coalproduct/mine/basic-info")
    public ApiResponse<CoalBasicInfoVO> getBasicInfo(@RequestParam(value = "orgCode", required = false) String orgCode) {
        CoalBasicInfoVO vo = coalOverviewItemService.getBasicInfo(orgCode);

//        if ("C_01_01".equals(orgCode)) {
//            // 南露天矿-南矿
//            vo.setDailyCoalOutput(new BigDecimal(31877));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(49310));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(20525));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(0));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(14.13));//库存量
//        } else if ("C_01_02".equals(orgCode)) {
//            // 北露天矿-北矿
//            vo.setDailyCoalOutput(new BigDecimal(37638.04));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(37638.04));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(46833));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(15201));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(3.14));//库存量
//        } else if ("C_01_03".equals(orgCode)) {
//            // 白音华露天矿-2号矿
//            vo.setDailyCoalOutput(new BigDecimal(56760));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(50559.86));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(14190));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(325894));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(6.7));//库存量
//        } else if ("C_01_04".equals(orgCode)) {
//            // 白音华蒙东煤业公司-3号矿
//            vo.setDailyCoalOutput(new BigDecimal(36080));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(47332.3));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(15775));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(311707));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(19.98));//库存量
//        } else if ("C_01_05".equals(orgCode)) {
//            // 扎哈淖尔露天矿-扎矿
//            vo.setDailyCoalOutput(new BigDecimal(63267));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(68456));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(111621));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(294856));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(6.47));//库存量
//        } else {
//            // 默认返回南露天矿信息
//            vo.setDailyCoalOutput(new BigDecimal(31877));//原煤产量(日)
//            vo.setDailyCoalSales(new BigDecimal(49310));//煤炭销量(日)
//            vo.setDailyOwnStripping(new BigDecimal(20525));//自有剥离量(日)
//            vo.setDailyOutsourcedStripping(new BigDecimal(0));//外委剥离量(日)
//            vo.setDailyStrippingRatio(new BigDecimal(0));//剥采比(日)
//            vo.setInventory(new BigDecimal(14.13));//库存量
//        }

        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "煤炭运输详情", description = "煤炭运输详情")
    @GetMapping(value = "/coalproduct/transport/detail")
    public ApiResponse<CoalTransportDetailVO> getTransportDetail(@RequestParam(value = "orgCode", required = false) String orgCode) {
        CoalTransportDetailVO vo = coalProdoperTransportService.getTransportDetail(orgCode);

//        if ("C_01_01".equals(orgCode)) {
//            // 南露天矿-南矿
//            vo.setLowHeatTransport(new BigDecimal(0));//低热值运输量
//            vo.setNormalHeatTransport(new BigDecimal(52564));//普热值运输量
//            vo.setStandardHeatTransport(new BigDecimal(12972.15));//标热值运输量
//            vo.setPremiumHeatTransport(new BigDecimal(0));//优热值运输量
//
//            // 构建趋势数据（9月27日到10月27日，共31天）
//            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
//
        List<CoalTransportDetailVO> trendData = new ArrayList<>();
//            // 汽运数据（您提供的列表）
//            String[] truckDataArray = {
//                    "16274.20", "17392.55", "16047.45", "16132.05", "15215.80", "15736.75",
//                    "17210.80", "13604.80", "14605.65", "0", "11549.75", "11705.25", "18060.20",
//                    "17089.80", "17471.95", "12797.25", "10070.40", "0", "0", "0", "0",
//                    "10757.95", "11041.80", "12989.35", "12256.40", "12062.50", "11111.40",
//                    "14865.75", "13861.70", "14412.25", "12972.15"
//            };

            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
//            Random random = new Random(42); // 固定种子保证结果一致
//
//            for (int i = 0; i < truckDataArray.length; i++) {
//                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
//                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
//
//                // 设置汽运量
//                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
//
//                // 模拟皮带运量（汽运量的60%-90%）
//                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
//                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(beltMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setBeltTransport(beltValue);
//
//                // 模拟铁运量（汽运量的40%-70%）
//                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
//                BigDecimal railValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(railMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setRailTransport(railValue);
//
//                trendData.add(item);
//            }
        trendData.add(vo);

//            vo.setTrendData(trendData);



//
//
//
//        } else if ("C_01_02".equals(orgCode)) {
//            // 北露天矿-北矿
//            vo.setLowHeatTransport(new BigDecimal(19749));//低热值运输量
//            vo.setNormalHeatTransport(new BigDecimal(0));//普热值运输量
//            vo.setStandardHeatTransport(new BigDecimal(11649.9));//标热值运输量
//            vo.setPremiumHeatTransport(new BigDecimal(0));//优热值运输量
//
//
//
//            // 构建趋势数据（9月27日到10月27日，共31天）
//            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
//
//            // 汽运数据（您提供的列表）
//            String[] truckDataArray = { "8125.24", "8012.10", "5703.60", "9238.12",
//                    "4847.26", "8012.30", "9820.34", "9844.28", "10518.78", "0", "10221.86",
//                    "11320.14", "10534.56", "9969.12", "8458.00", "10183.22", "10302.10",
//                    "8025.90", "0", "0", "0", "6011.14", "9539.78", "10621.32", "13025.86",
//                    "10493.06", "8977.66", "12566.92", "9697.46", "10122.04", "11649.90"
//            };
//
//            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
//            Random random = new Random(42); // 固定种子保证结果一致
//
//            for (int i = 0; i < truckDataArray.length; i++) {
//                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
//                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
//
//                // 设置汽运量
//                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
//
//                // 模拟皮带运量（汽运量的60%-90%）
//                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
//                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(beltMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setBeltTransport(beltValue);
//
//                // 模拟铁运量（汽运量的40%-70%）
//                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
//                BigDecimal railValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(railMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setRailTransport(railValue);
//
//                trendData.add(item);
//            }
//
//            vo.setTrendData(trendData);
//        } else if ("C_01_03".equals(orgCode)) {
//            // 白音华露天矿-2号矿
//            vo.setLowHeatTransport(new BigDecimal(0));//低热值运输量
//            vo.setNormalHeatTransport(new BigDecimal(11691));//普热值运输量
//            vo.setStandardHeatTransport(new BigDecimal(24955));//标热值运输量
//            vo.setPremiumHeatTransport(new BigDecimal(0));//优热值运输量
//
//
//
//
//
//
//
//            // 构建趋势数据（9月27日到10月27日，共31天）
//            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
//
//            // 汽运数据（您提供的列表）
//            String[] truckDataArray = {
//                    "16274.20", "17392.55", "16047.45", "16132.05", "15215.80", "15736.75",
//                    "17210.80", "13604.80", "14605.65", "0", "11549.75", "11705.25", "18060.20",
//                    "17089.80", "17471.95", "12797.25", "10070.40", "0", "0", "0", "0",
//                    "10757.95", "11041.80", "12989.35", "12256.40", "12062.50", "11111.40",
//                    "14865.75", "13861.70", "14412.25", "12972.15"
//            };
//
//            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
//            Random random = new Random(42); // 固定种子保证结果一致
//
//            for (int i = 0; i < truckDataArray.length; i++) {
//                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
//                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
//
//                // 设置汽运量
//                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
//
//                // 模拟皮带运量（汽运量的60%-90%）
//                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
//                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(beltMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setBeltTransport(beltValue);
//
//                // 模拟铁运量（汽运量的40%-70%）
//                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
//                BigDecimal railValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(railMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setRailTransport(railValue);
//
//                trendData.add(item);
//            }
//
//            vo.setTrendData(trendData);
//        } else if ("C_01_04".equals(orgCode)) {
//            // 白音华蒙东煤业公司-3号矿
//            vo.setLowHeatTransport(new BigDecimal(0));//低热值运输量
//            vo.setNormalHeatTransport(new BigDecimal(2876.35));//普热值运输量
//            vo.setStandardHeatTransport(new BigDecimal(54144.55));//标热值运输量
//            vo.setPremiumHeatTransport(new BigDecimal(0));//优热值运输量
//
//
//
//
//
//
//
//
//
//
//
//
//
//            // 构建趋势数据（9月27日到10月27日，共31天）
//            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
//
//            // 汽运数据（您提供的列表）
//            String[] truckDataArray = {
//                    "16274.20", "17392.55", "16047.45", "16132.05", "15215.80", "15736.75",
//                    "17210.80", "13604.80", "14605.65", "0", "11549.75", "11705.25", "18060.20",
//                    "17089.80", "17471.95", "12797.25", "10070.40", "0", "0", "0", "0",
//                    "10757.95", "11041.80", "12989.35", "12256.40", "12062.50", "11111.40",
//                    "14865.75", "13861.70", "14412.25", "12972.15"
//            };
//
//            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
//            Random random = new Random(42); // 固定种子保证结果一致
//
//            for (int i = 0; i < truckDataArray.length; i++) {
//                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
//                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
//
//                // 设置汽运量
//                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
//
//                // 模拟皮带运量（汽运量的60%-90%）
//                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
//                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(beltMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setBeltTransport(beltValue);
//
//                // 模拟铁运量（汽运量的40%-70%）
//                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
//                BigDecimal railValue = new BigDecimal(truckDataArray[i])
//                        .multiply(BigDecimal.valueOf(railMultiplier))
//                        .setScale(2, RoundingMode.HALF_UP);
//                item.setRailTransport(railValue);
//
//                trendData.add(item);
//            }
//
//            vo.setTrendData(trendData);
//        } else if ("C_01_05".equals(orgCode)) {
//            // 扎哈淖尔露天矿-扎矿
//            vo.setLowHeatTransport(new BigDecimal(0));//低热值运输量
//            vo.setNormalHeatTransport(new BigDecimal(4739));//普热值运输量
//            vo.setStandardHeatTransport(new BigDecimal(0));//标热值运输量
//            vo.setPremiumHeatTransport(new BigDecimal(39150.75));//优热值运输量
//
//
//
//
//
//
//
//
//            // 构建趋势数据（9月27日到10月27日，共31天）
//            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
//
////            // 汽运数据（您提供的列表）
////            String[] truckDataArray = {
////                    "8718.95",
////                    "9593.8",
////                    "12624.2",
////                    "6262.2",
////                    "0",
////                    "2050.55",
////                    "2015.8",
////                    "2257.3",
////                    "3143.45",
////                    "0",
////                    "2568.8",
////                    "2628.15",
////                    "4042.5",
////                    "2851.8",
////                    "4463.9",
////                    "3417.8",
////                    "4723.25",
////                    "3416.35",
////                    "0",
////                    "3918.55",
////                    "1003.15",
////                    "3589.35",
////                    "2855.5",
////                    "4313.9",
////                    "5058.55",
////                    "7871.4",
////                    "6770.05",
////                    "7343.65",
////                    "8421.4",
////                    "7834.7",
////                    "9223.75"
////            };
////
////            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
////            Random random = new Random(42); // 固定种子保证结果一致
////
////            for (int i = 0; i < truckDataArray.length; i++) {
////                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
////                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
////
////                // 设置汽运量
////                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
////
////                // 模拟皮带运量（汽运量的60%-90%）
////                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
////                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
////                        .multiply(BigDecimal.valueOf(beltMultiplier))
////                        .setScale(2, RoundingMode.HALF_UP);
////                item.setBeltTransport(beltValue);
////
////                // 模拟铁运量（汽运量的40%-70%）
////                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
////                BigDecimal railValue = new BigDecimal(truckDataArray[i])
////                        .multiply(BigDecimal.valueOf(railMultiplier))
////                        .setScale(2, RoundingMode.HALF_UP);
////                item.setRailTransport(railValue);
////
////                trendData.add(item);
////            }
////
////            vo.setTrendData(trendData);
////        } else {
////            // 默认返回南露天矿信息
////            vo.setLowHeatTransport(new BigDecimal(0));//低热值运输量
////            vo.setNormalHeatTransport(new BigDecimal(52564));//普热值运输量
////            vo.setStandardHeatTransport(new BigDecimal(12972.15));//标热值运输量
////            vo.setPremiumHeatTransport(new BigDecimal(0));//优热值运输量
////
////
////
////
////
////
////
////            // 构建趋势数据（9月27日到10月27日，共31天）
////            List<CoalTransportDetailVO.TransportTrendItem> trendData = new ArrayList<>();
////
////            // 汽运数据（您提供的列表）
////            String[] truckDataArray = {
////                    "2089.05",
////                    "2516.85",
////                    "3133.55",
////                    "2562.8",
////                    "1534.7",
////                    "1476.85",
////                    "1859.4",
////                    "2146.05",
////                    "1997.25",
////                    "1023.2",
////                    "1226.65",
////                    "1046.25",
////                    "1105.8",
////                    "2708.9",
////                    "2709.75",
////                    "2651.1",
////                    "3388.6",
////                    "2658",
////                    "0",
////                    "0",
////                    "0",
////                    "1762.1",
////                    "1976.9",
////                    "2982.05",
////                    "2991.55",
////                    "2168.15",
////                    "1912.75",
////                    "2149.15",
////                    "2361.6",
////                    "3693.4",
////                    "2942.9"
////            };
////
////            // 生成皮带运量和铁运量的模拟数据（您可以根据实际情况替换）
////            Random random = new Random(42); // 固定种子保证结果一致
////
////            for (int i = 0; i < truckDataArray.length; i++) {
////                CoalTransportDetailVO.TransportTrendItem item = new CoalTransportDetailVO.TransportTrendItem();
////                item.setDay(i + 1); // 日期从1开始，对应9月27日到10月27日
////
////                // 设置汽运量
////                item.setTruckTransport(new BigDecimal(truckDataArray[i]));
////
////                // 模拟皮带运量（汽运量的60%-90%）
////                double beltMultiplier = 0.6 + random.nextDouble() * 0.3;
////                BigDecimal beltValue = new BigDecimal(truckDataArray[i])
////                        .multiply(BigDecimal.valueOf(beltMultiplier))
////                        .setScale(2, RoundingMode.HALF_UP);
////                item.setBeltTransport(beltValue);
////
////                // 模拟铁运量（汽运量的40%-70%）
////                double railMultiplier = 0.4 + random.nextDouble() * 0.3;
////                BigDecimal railValue = new BigDecimal(truckDataArray[i])
////                        .multiply(BigDecimal.valueOf(railMultiplier))
////                        .setScale(2, RoundingMode.HALF_UP);
////                item.setRailTransport(railValue);
////
////                trendData.add(item);
////            }
////
////            vo.setTrendData(trendData);
////        }

        return ApiResponse.succeed(vo);
//    return ApiResponse.succeed(trendData);
    }

    @Operation(summary = "坑下人员情况", description = "坑下人员情况")
    @GetMapping(value = "/coalproduct/underground/personnel")
    public ApiResponse<CoalUndergroundPersonnelVO> getUndergroundPersonnel(@RequestParam(value = "orgCode", required = false) String orgCode) {
        CoalUndergroundPersonnelVO vo = coalOverviewItemService.getUndergroundPersonnel(orgCode);
        return ApiResponse.succeed(vo);
    }

    @Operation(summary = "安全环保告警", description = "安全环保告警")
    @GetMapping(value = "/coalproduct/safety-env/alerts")
    public ApiResponse<CoalSafetyEnvVO> getSafetyEnvAlerts(@RequestParam(value = "orgCode", required = false) String orgCode) {
        CoalSafetyEnvVO vo = coalSafetyenvAlarmService.getSafetyEnvAlerts(orgCode);
        return ApiResponse.succeed(vo);
    }

}
